package com.cebbank.sz.cebtemplate.utils;

import com.cebbank.sz.cebtemplate.model.po.ResponseData;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import oracle.sql.OracleJdbc2SQLInput;

import java.util.List;
import java.util.Map;

/**
 * JSON转换工具
 *
 * @author sucz
 * @create 2019/12/11 10:27
 */
public class JsonUtil {

//    /**
//     * JSON转List
//     * @param json
//     * @param clazz
//     * @param <T>
//     * @return
//     */
//    public static <T> List<T> jsonToList(String json, Class<T> clazz) {
//        return JSONArray.parseArray(json, clazz);
//    }
//
//    /**
//     * JSON转JavaBean
//     * @param json
//     * @param clazz
//     * @param <T>
//     * @return
//     */
//    public static <T> T jsonToBean(String json, Class<T> clazz) {
//        return JSONObject.parseObject(json, clazz);
//    }
//
//    /**
//     * JavaBean转Map
//     * @param object
//     * @return
//     */
//    public static Map<String, Object> objectToMap(Object object) {
//        return JSONObject.parseObject(JSON.toJSONString(object));
//    }
//
//    /**
//     * Map转JavaBean
//     * @param map
//     * @param clazz
//     * @param <T>
//     * @return
//     */
//    public static <T> T mapToBean(Map map, Class<T> clazz) {
//        return JSONObject.parseObject(JSON.toJSONString(map), clazz);
//    }
//
//    /**
//     * Object转String
//     * @param object
//     * @return
//     */
//    public static String objectToStr(Object object) {
//        return JSON.toJSONString(object);
//    }

    public static void main(String[] args) {
        String dataJson = "{\n" +
                "\t\"status\": 200,\n" +
                "\t\"msg\": \"OK\",\n" +
                "\t\"data\": [{\n" +
                "\t\t\"id\": 1,\n" +
                "\t\t\"username\": \"eric\",\n" +
                "\t\t\"password\": \"123456\",\n" +
                "\t\t\"age\": 29,\n" +
                "\t\t\"sex\": 0,\n" +
                "\t\t\"permission\": 0,\n" +
                "\t\t\"isDel\": 0\n" +
                "\t}]\n" +
                "}";
        Gson gson = buildGson();
        ResponseData data = gson.fromJson(dataJson, ResponseData.class);
        System.out.println(data.toString());
        System.out.println(gson.toJson(data, ResponseData.class));
    }


    private static Gson buildGson() {
        GsonBuilder gsonBuilder = new GsonBuilder();
//        gsonBuilder.registerTypeAdapterFactory(DataTypeAdaptor.FACTORY);
        gsonBuilder.registerTypeAdapterFactory(ObjectIntTypeAdaptor.FACTORY);
        return gsonBuilder.create();
    }

    public static String toJsonString(Object obj) {
        Gson gson = new Gson();
        String str = gson.toJson(obj);
//        System.out.println(str);
        return str;
    }


}
